package br.com.moxeon.control;

import br.com.moxeon.model.IMoxeonPersistentEntity;
import br.com.vexillum.control.GenericControl;
import br.com.vexillum.util.Return;

public class MoxeonBaseController<E extends IMoxeonPersistentEntity> extends GenericControl<E> {

	public MoxeonBaseController(Class<E> classEntity) {
		super(classEntity);
	}

	
	public Return deactivate(){
		entity.setActive(false);
		return super.update();
	}
	
	/*
	 M�todo para listar
	 Fa�o um sql para pegar do banco de dados os valores j� salvos.
	 Crio uma condi��o onde a variavel data vai fazer um get para pegar os valores e verificar se s�o nulos
	 se forem nulos a condi��o ser� removida. Logo em seguida coloco o valor final da minha sql.	 
	 */
	@Override
	public Return listAll() {
		String sql = "FROM " + classEntity.getSimpleName() + " WHERE active = true ORDER BY name";
		if(data.get("entity") != null && (((IMoxeonPersistentEntity) data.get("entity")).getActive() != null) && !(((IMoxeonPersistentEntity) data.get("entity")).getActive())){
			sql = sql.replace(" WHERE active = true", "");
		}
		data.put("sql", sql);
		return super.searchByHQL();
	}
	
}
